﻿using System.Collections.Generic;
using System.Xml.Linq;
using Entidades;

namespace CapaDeGestion
{
    public class GestionArchivo:IGestionArchivo
    {
        /**
         * Método que se encarga de elaborar el archivo de carga (xml) 
         * que sera llevado a las maquinas de apuesta para cargar los 
         * datos de los eventos, no recibe parametros debido a que en el se guardan 
         * todos los datos que existen actualmente en la base de datos del sistema
         */
        public void ArchivoDeExportacionDatos()
        {
            IGestionUsuario gestionUsuario = new GestionUsuario();
            IList<Usuario> listaUsuarios = gestionUsuario.SeleccionarTodos();
            IGestionCategoria gestionCategoria = new GestionCategoria();
            IList<Categoria> listaCategoria = gestionCategoria.SeleccionarTodos();
            IGestionEvento gestionEvento = new GestionEvento();
            IList<Evento> listaEventos = gestionEvento.SeleccionarTodos();
            IGestionParticipante gestionParticipante = new GestionParticipante();
            IList<Participante> listaParticipante = gestionParticipante.SeleccionarTodos();
            IGestionHistorialEvento gestionHistorial = new GestionHistorialEvento();
            IList<HistorialEvento> listaHistorial = gestionHistorial.SeleccionarTodos();
            string participantes = "<Participantes>";
            string eventos = "<Eventos>";
            string categorias = "<Categorias>";
            string historiales = "<Historiales>";
           string usuarios = "<Usuarios>";
            string pur = "lo que sea";
            foreach (var Usuario in listaUsuarios)
            {
                usuarios = usuarios + "<Usuario>" +
                    "<Nombreusuario>" + Usuario.Nombreusuario + "</Nombreusuario>" +
                    "<Contrasena>" + Usuario.Contrasena + "</Contrasena>" +
                    "<Preguntasecreta>" + Usuario.Preguntasecreta + "</Preguntasecreta>" +
                    "<Respuesta>" + Usuario.Respuesta + "</Respuesta>" +
                    "<Nombre>" + Usuario.Nombre + "</Nombre>" +
                    "<Apellido>" + Usuario.Apellido + "</Apellido>" +
                    "<Sexo>" + Usuario.Sexo + "</Sexo>" +
                    "<Tipo>" + Usuario.Tipo + "</Tipo>" +
                "</Usuario>";
            }
            usuarios = usuarios + "</Usuarios>";
            foreach (var Categoria in listaCategoria)
            {
                categorias = categorias + "<Categoria>" +
                    "<Idcategoria>" + Categoria.IdCategoria + "</Idcategoria>" +
                    "<Nombre>" + Categoria.Nombre + "</Nombre>" +
                "</Categoria>";
            }
            categorias = categorias + "</Categorias>";

            foreach (var Participante in listaParticipante)
            {
                participantes = participantes + "<Participante>" +
                    "<Idparticipante>" + Participante.Idparticipante + "</Idparticipante>" +
                    "<Nombre>" + Participante.Nombre + "</Nombre>" +
                "</Participante>";
            }
            participantes = participantes +
                "</Participantes>";
            foreach (var Evento in listaEventos)
            {
                eventos = eventos + "<Evento>" +
                    "<Idevento>" + Evento.Idevento + "</Idevento>" +
                    "<Nombre>" + Evento.Nombre + "</Nombre>" +
                    "<Maxposiciones>" + Evento.Maxposiciones + "</Maxposiciones>" +
                    "<Fecha>" + Evento.Fecha + "</Fecha>" +
                    "<Fkcategoria>" + Evento.Nombrecategoria.IdCategoria + "</Fkcategoria>" +
                "</Evento>";
            }
            eventos = eventos + "</Eventos>";

            foreach (var HistorialEvento in listaHistorial)
            {
                historiales = historiales + "<Historial>" +
                    "<Idhistorial>" + HistorialEvento.Idhistorialevento + "</Idhistorial>" +
                    "<Tope>" + HistorialEvento.Tope + "</Tope>" +
                    "<Apuesta>" + HistorialEvento.Apuesta + "</Apuesta>" +
                    "<Apostador>" + HistorialEvento.Apostador+ "</Apostador>" +
                    "<Fkevento>" + HistorialEvento.Nombrevento.Idevento + "</Fkevento>" +
                     "<Fkparticipante>" + HistorialEvento.Nombreparticipante.Idparticipante + "</Fkparticipante>" +
                "</Historial>";
            }
            historiales = historiales + "</Historiales>";
            string strXml = @"<Carga>" + usuarios + categorias + participantes + eventos + historiales+ "</Carga>";
            XElement xml = XElement.Parse(strXml);

            XDocument pruebaXml = new XDocument(xml);
            pruebaXml.Save(@"C:\Users\Lis\Documents\miXML.xml");

        }
    }
}
